---
title: "MTST no Twitter"
output:
flexdashboard::flex_dashboard:
orientation: rows
social: menu
source_code: embed
---
```{r setup, include=FALSE}
if (!('devtools' %in% installed.packages()[,'Package'])){install.packages("devtools")}; require(devtools); # To get packages from Github
if (!('rtweet' %in% installed.packages()[,'Package'])){install.packages("rtweet")}; require(rtweet); # Twitter API interface
if (!('igraph' %in% installed.packages()[,'Package'])){install.packages("igraph")}; require(igraph); # graphs
if (!('tidygraph' %in% installed.packages()[,'Package'])){install.packages("tidygraph")}; require(tidygraph); # graphs as dplyr
if (!('leiden' %in% installed.packages()[,'Package'])){install.packages("leiden")}; require(leiden); # Clustering algorithm
if (!('flexdashboard' %in% installed.packages()[,'Package'])){install.packages("flexdashboard")};require(flexdashboard);# For dashboards
# load necessary function files
wd <- '/home/cesar/Dropbox/R/Twitter_analyses/Projetos/MTST_semanal'
setwd(wd)
file.sources = list.files(paste0(wd,'/modular_codes'),
pattern="*.R", full.names = TRUE, )
sapply(file.sources,source, local = knitr::knit_global())
```
```{r}
appname <- 'InFo(r)me'
consumerKey='oPwkEUrnLYdi0pe3P71ENDkHU'
consumerSecret='dvz2GeOOsYi0DfR957MT7bKkCkFt1HfeB3NPYskSGPaRTSNuSS'
accessToken='81131185-sjFX3WKJeeB05IAiaHUUNAq2yrGcMNMNfILiNBmEA'
accessTokenSecret= 'TO1Qy6ZsMGHzA8IHGhsqQ5ADqQJCRkHKfe440zZZ5B8PW'
rapidapi_key = '9453432f12mshd49bad8f648a9e8p117dc9jsn4f1ca9517def'
# Search term
search_term <- c('MTST', 'Nucleo de Tecnologia')
# max tweets
n <- 100000
#Connect to twitter
if(is.null(get_token())){
twitter_token <- create_token(app = appname,
consumer_key = consumerKey,
consumer_secret = consumerSecret,
access_token = accessToken,
access_secret = accessTokenSecret)
}else{
twitter_token <- get_token()
}
sig <- config(token = twitter_token)
```
```{r}
# Start from Here when twitter data is provided
tweet_df <- rtweet::read_twitter_csv('data/twitter_data.csv')
```
```{r}
meta <- list(tweets = nrow(tweet_df),
by_term = t(as.matrix(table(tweet_df %>% pull(query)))))
# Polaridade de sentimentos com base em bancos em PtBr oplex e Sentilex
tweet_df <- polaridades(tweet_df)
# Interaction Network
net <- my_network_graph(tweet_df) %>%
as_tbl_graph()
# Interaction network metrics
net <- net %N>%
mutate(community = as.factor(leiden(net, resolution_parameter = 0.5))) %E>%
mutate(community = .N()$community[from]) %E>% # .N() makes the node data available while manipulating edges
mutate(edge_bet = centrality_edge_betweenness(directed = T)) %N>%
mutate(in_degree = centrality_degree(mode = 'in')) %>%
mutate(out_degree = centrality_degree(mode = 'out')) %>%
mutate(betweenness_c = centrality_betweenness(directed = T)) %>% # centrality_betweenness can't handle large graphs bc output is list
mutate(eigen = centrality_eigen(directed = T))
```
### Rede basica: Essa rede mostra a estrutura básica das interações e os agrupamentos principais das interações.
```{r}
basic_net(net, meta, search_term)
```
### Tipos de interação: Essa rede mostra a estrutura básica das interações, os agrupamentos, e um foco nos tipos de interação que ocorreram na amostra. Amarelo = RT, laranja = mention, vermelho = reply, vinho = quote.
```{r}
int_type_net(net, meta, search_term)
```